﻿// Mirco Töpfer

using System;
using System.Windows.Forms;
using pheidippides.app.FormManager;
using pheidippides.configuration.Classes;

namespace pheidippides.app.Forms
{
    public partial class MainForm : Form
    {
        #region Constructor

        public MainForm()
        {
            InitializeComponent();
            toolStripStatusLabelVersion.Text = "Version: " +
                                               System.Reflection.Assembly.GetEntryAssembly().GetName().Version;

            SetDateTimeInStatusLabel();

            SetActualVeranstaltung();

            FormManager.FormManager.Initialize(this);
        }

        #endregion

        #region Private Methods

        private void SetDateTimeInStatusLabel()
        {
            toolStripStatusLabelDateTime.Text = "Aktuelle Zeit: " + DateTime.Now.ToLongDateString() + " " +
                                                DateTime.Now.ToLongTimeString();
        }

        #endregion

        #region Menue Methods 

        private void beendenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void pheidippidesImInternetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormManager.FormManager.GetInstance().ShowForm(FormName.InfoWebsiteForm);
        }

        private void bugFeaturerequestToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormManager.FormManager.GetInstance().ShowForm(FormName.BugFeatureWebsiteForm);
        }

        private void lizenzToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormManager.FormManager.GetInstance().ShowForm(FormName.LicenseWebsiteForm);
        }

        private void logMonitorToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormManager.FormManager.GetInstance().ShowForm(FormName.LoggingMonitorForm);
        }

        private void teilnehmerverwaltungToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormManager.FormManager.GetInstance().ShowForm(FormName.TeilnehmerManagementForm);
        }

        private void einstellungenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormManager.FormManager.GetInstance().ShowForm(FormName.ConfigSettings);
        }

        #endregion

        #region Formular Funktionen

        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult Result = MessageBox.Show("Möchten Sie die Anwendung beenden?", "Frage?",
                                                  MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (Result.Equals(DialogResult.No))
                e.Cancel = true;
        }

        #endregion

        #region Timer Funktionen

        private void timerFormStatusleisteRefresh(object sender, EventArgs e)
        {
            SetDateTimeInStatusLabel();
        }

        #endregion

        #region Public Methods

        public void SetActualVeranstaltung()
        {
            Guid VeranstaltungsID =
                new Guid(
                    ConfigManager.GetInstance().GetConfigEnry(configuration.Interfaces.ConfigEntryName.VeranstaltungsId));

            if (VeranstaltungsID.Equals(Guid.Empty))
            {
                MessageBox.Show(
                    "Es ist keine Startveranstaltung hinterlegt. Bitte erstellen Sie eine Veranstaltung und hinterlegen Sie diese als Startveranstaltung.",
                    "Programmstart", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                toolStripStatusLabelActuelleVeranstaltung.Text = "Nicht ausgewählt!";
            }
            else
            {
                //ToDo:Veranstaltung Setzen
                toolStripStatusLabelActuelleVeranstaltung.Text = VeranstaltungsID.ToString();
            }
        }

        #endregion
    }
}